package com.stylefeng.guns.modular.netcar.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.stylefeng.guns.core.validater.Insert;
import com.stylefeng.guns.core.validater.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;


@Data
@EqualsAndHashCode(callSuper=true)
@TableName("vehicle_inf")
 /**
 * 车辆信息
 *
 * @author sasazaixian
 * @Date 2018-10-23 11:06
 * @TableField(exist = false) 实现属性与数据库字段不一一对应
 */
public class VehicleInf extends Model<VehicleInf> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     * 自动生成后修改成实际的主键 
     */
    @TableId(value = "vi_id", type = IdType.UUID)
    @ApiModelProperty(value = "车辆ID")
    @NotNull(message="编号不能为空",groups = Update.class)
    private String viId;     //车辆ID
    @Override
    protected Serializable pkVal() {
        return this.viId;
    }
    
    //扩展能查询字段
    @TableField(exist = false)
    @JSONField(serialize = false)
    private String key ;
    //开始日期
    @TableField(exist = false)
    @JSONField(serialize = false)
    private String sdate;
    //截止日期 
    @TableField(exist = false)
    @JSONField(serialize = false)
	private String edate;
    //排序字段
    @TableField(exist = false)
    @JSONField(serialize = false)
	private String  sortField ;
	//排序	
	@TableField(exist = false)
    @JSONField(serialize = false)
	private String sortOrder;

    @ApiModelProperty(value = "车企ID 可查询子机构车辆")
    @TableField(exist = false)
    private String soIdAll;

    @ApiModelProperty(value = "车企+车牌号")
    @TableField(exist = false)
    private String vehiclePlateAll;


    @ApiModelProperty(value = "车牌号码")
    @TableField("vi_vehicle_plate")
    @NotNull(message = "车牌号码不能为空",groups = {Insert.class, Update.class})
    private String viVehiclePlate;     //车牌号码

    @ApiModelProperty(value = "车牌颜色")
    @TableField("vi_plate_color")
    @NotNull(message = "车牌颜色不能为空",groups = {Insert.class, Update.class})
    private String viPlateColor;     //车牌颜色

    @ApiModelProperty(value = "车身颜色")
    @TableField("vi_vehicle_color")
    @NotNull(message = "车身颜色不能为空",groups = {Insert.class, Update.class})
    private String viVehicleColor;     //车身颜色

    @ApiModelProperty(value = "所属车企ID")
    @TableField("so_id")
    @NotNull(message = "所属车企ID不能为空",groups = {Insert.class, Update.class})
    private String soId;     //所属车企ID

    @ApiModelProperty(value = "车辆品牌")
    @NotNull(message = "车辆品牌不能为空",groups = {Insert.class, Update.class})
    @TableField("vi_brand")
    private String viBrand;     //车辆品牌

    @ApiModelProperty(value = "车辆型号")
    @TableField("vi_model")
    @NotNull(message = "车辆型号不能为空",groups = {Insert.class, Update.class})
    private String viModel;     //车辆型号

    @ApiModelProperty(value = "车辆类型（车型：车型 微型车，小型车，中型车，大型车）")
    @TableField("vi_vehicle_type")
    @NotNull(message = "车辆类型不能为空",groups = {Insert.class, Update.class})
    private String viVehicleType;     //车辆类型（车型：车型 微型车，小型车，中型车，大型车）

    @ApiModelProperty(value = "使用性质")
    @TableField("vi_vehicle_use_type")
    @NotNull(message = "使用性质不能为空",groups = {Insert.class, Update.class})
    private String viVehicleUseType;     //使用性质

    @ApiModelProperty(value = "核载人数")
    @TableField("vi_max_count")
    @NotNull(message = "核载人数不能为空",groups = {Insert.class, Update.class})
    private Integer viMaxCount;     //核载人数

    @ApiModelProperty(value = "可经营项目")
    @TableField("vi_current_account")
    private String viCurrentAccount;     //可经营项目

    @ApiModelProperty(value = "使用状态，1启用，0禁用")
    @TableField("vi_is_alived")
    @NotNull(message = "使用状态不能为空",groups = {Insert.class, Update.class})
    private String viIsAlived;     //使用状态，1启用，0禁用

    @ApiModelProperty(value = "创建人")
    @TableField("create_user")
    private String createUser;     //创建人

    @ApiModelProperty(value = "创建时间")
    @TableField("create_time")
    private Date createTime;     //创建时间

    @ApiModelProperty(value = "更新人")
    @TableField("update_user")
    private String updateUser;     //更新人

    @ApiModelProperty(value = "更新时间")
    @TableField("update_time")
    private Date updateTime;     //更新时间

    @ApiModelProperty(value = "备注")
    @TableField("note")
    private String note;     //备注

    @ApiModelProperty(value = "所属车队")
    @TableField("vi_dept_id")
    private String viDeptId;     //所属车队

    @ApiModelProperty(value = "设备号（车辆在监控平台的设备号）")
    @TableField("vi_didno")
    private String viDidno;     //设备号（车辆在监控平台的设备号）

    @ApiModelProperty(value = "车辆轴距（mm）")
    @TableField("vi_wheel_base")
    private Integer viWheelBase;     //车辆轴距（mm）

    @ApiModelProperty(value = "完税价（元）")
    @TableField("vi_price_with_tax")
    private Integer viPriceWithTax;     //完税价（元）

    @ApiModelProperty(value = "发送机编号")
    @TableField("vi_engine_id")
    private String viEngineId;     //发送机编号

    @ApiModelProperty(value = "车架号")
    @TableField("vi_vin")
    private String viVin;     //车架号

    @ApiModelProperty(value = "1:自用车，2租车")
    @TableField("vi_owntype")
    private Integer viOwntype;     //1:自用车，2租车

    @ApiModelProperty(value = "内部编号")
    @TableField("vi_code")
    private String  viCode;     //内部编号

}
